/**
 *	@author: Kathleen Go
 *	date created: December 19, 2005
 *	version: 1.0
 * modified: February 7, 2006
 */

package text.ia;

import java.util.Vector;
import java.util.Hashtable;

public interface Aligner{
	
	/**	Finds the alignment of words between the Source tokens (vSourceTokens)
	 *	and the Target tokens (vTargetTokens).
	 * 
	 *	Returns the {@link Hashtable} of aligned words.
	 *
	 *	@param vTokenSource a {@link Vector} representing the Source tokens to be aligned
	 *	@param vTokenTarget a {@link Vector} representing the Target tokens to be aligned
	 *	@param bFromInputAnalysis is a primitive boolean indicating if it is being used
	 *		in input analysis or in template refinement
	 *	@return the {@link Hashtable} containing the aligned tokens
	 *			a token from the Source is stored as a KEY
	 *			a KEY entry is a {@link String} consisting of the Source token
	 *			corresponding VALUEs are the matched tokens in the Target
	 *			a VALUE entry is a {@link Vector} consisting of at least 1 Target token {@link String}
	 */
	public Hashtable align(Vector vSourceTokens, Vector vTargetTokens, boolean bFromInputAnalysis);
	
	/**	Returns the updated Source and Target tokens in the same order it was passed to the
	 *	align() function.  The Source and Target tokens returned may still be the same with
	 *	the original ones if there are no compound words, dates and times identified.
	 * 
	 *	Returns the {@link Vector} containing the Source tokens Vector
	 *		and Target tokens Vector.
	 *
	 *	@return the {@link Vector} containing the {@link Vector} of updated Source tokens and
	 *		{@link Vector} of updated Target tokens
	 *			index 0 contains the {@link Vector} of updated Source tokens
	 *			index 1 contains the {@link Vector} of updated Target tokens
	 */
	public Vector getUdpatedTokens();
}